package com.demo.resourcecode.c6;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyClassPathXmlApplicationContext extends ClassPathXmlApplicationContext {

	public MyClassPathXmlApplicationContext(String... configLocations){
		super(configLocations);
	}

	@Override
	protected void initPropertySources(){
		//添加验证要求
		//工程在运行过程中要用到某个设置，比如VAR是从系统环境变量中取得的，而如果用户没有在系统环境变量中设置这个参数，那么工程可能不会工作。
		//这时我们可以进行下面的扩展：
		//当程序执行到validateRequiredProperties()方法时，如果系统并没有检测到对应VAR的环境变量，那么将抛出异常。
		getEnvironment().setRequiredProperties("VAR");
	}

	@Override
	protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory){
		super.setAllowBeanDefinitionOverriding(false);
		super.setAllowCircularReferences(false);
		super.customizeBeanFactory(beanFactory);
	}

}
